Conventionally, software for performing image processing on an image processing apparatus such as a copying machine or an MFP (Multifunction Printer) is mainly constructed as so-called firmware which is static and fixed on an operating system (OS). Even in the case of being internally configured by multiple modules, such firmware is stored in a nonvolatile memory of the apparatus in a state in which the entirety thereof is statically linked to a single load module. On a system startup, it is either loaded from the nonvolatile memory such as a hard disk to a RAM to be implemented or is directly implemented on the nonvolatile memory such as a ROM having the firmware stored therein. In particular, the firmware configuring an incorporating system such as a low-cost image processing apparatus is generally configured not to perform dynamic loading or linking of a partial module for the sake of its economical efficiency and security. This is because cost performance of the apparatus is deteriorated by an amount of memory for storing a symbol table necessary to implement the dynamic link and overhead relating to a process for accessing an address of a symbol. Furthermore, it is attributable to a danger that the additional loading and linking of a sub-module may jeopardize quality and security of the entire system sufficiently evaluated and achieved before linking that sub-module.
Conventionally, development is underway as to the image processing apparatus having a further layer of a software operating environment provided on a real-time OS of the firmware of the incorporating system and supporting dynamic properties of software such as dynamic loading, dynamic linking and dynamic memory operation in the provided software operating environment. The software operating environment capable of adding a module is configured by an interpreter, a set of application programming interfaces (API) and a group of frameworks, and provides a kind of OS or computing platform for the software operating thereon. The interpreter sequentially reads, interprets and implements a series of instruction sequences consisting of the instructions included in a predetermined instruction set. In the case of taking the instruction set as equivalent positioning to the instruction set for a CPU, the interpreter may be called a virtual machine in particular. The set of APIs and the group of frameworks allow access to a resource provided by an actual real-time OS in a lower layer of this software operating environment and various resource groups having hardware resources abstracted for the sake of the software operating in the software operating environment. These resources are an instruction implementing context by means of a processor, a memory, a file system and various kinds of input/output (I/O) including a network interface for instance. The software operating environment can uniquely manage the instruction implementing context on the interpreter independently of a multitask mechanism provided by the CPU and the real-time OS. As for memory management, the software operating environment can similarly provide unique memory management.
The software operating in such a software operating environment is sequentially read and interpreted by the interpreter, and so there is a possibility that it can monitor the instruction sequences in the course of these processes and exclude the operations having an adverse effect on the system. The access to various resources from the software operating in the software operating environment is gained indirectly by way of the group of APIs and group of frameworks provided by the software operating environment. Therefore, there is a possibility of excluding the operations having an adverse effect on the system in the course of this access. Thus, it is very effective to adopt an approach of providing a hierarchy of the software operating environment consisting of the interpreter, group of APIs and group of frameworks inside the firmware in order to partially introduce the dynamic properties of software in the firmware of a low-cost incorporating system which should be statically and fixedly configured (refer to Japanese Patent Laid-Open No. 11-282684 and Japanese Patent Laid-Open No. 2003-256216).
As for the above approach, it is possible, for the sake of implementing the hierarchy of the software operating environment, to adopt a Java (registered trademark) virtual machine as the interpreter and adopt the group of APIs and group of frameworks related to Java (registered trademark). The applicant hereof commercialized a complex machine incorporating a Java (registered trademark) platform inside the firmware of the image processing apparatus in 2003.
Conventionally, an application down-loading type of printer having a network computer is used to download a data file to be printed and an application corresponding to the data file from a computer network to the printer. And there is a known printer incorporating the network computer for starting and running the downloaded application inside the printer and opening the data file and converting it to a raster image to print it. It is also disclosed that a “Java registered trademark) Applet” is used as the application in this case. It is also disclosed that, even in the case of being pushed with a printing data file from a client, the application is pulled from an application server by the printer (refer to Japanese Patent Laid-Open No. 11-53132).
Japanese Patent Laid-Open No. 11-306107 discloses a network communication system for connecting a server apparatus having multiple peripherals, multiple terminal apparatuses having the software operating the peripherals, and at least a database relating the software operating the peripherals to a transmission channel to perform a network communication based on a predetermined communication protocol, wherein the peripherals include a client control portion for requesting and obtaining from the server apparatus current module information corresponding to all or a part of the software operating the peripherals or the module used by the software, and a software distribution agent for distributing an obtained current module to the terminal apparatuses. It is also disclosed that the “Java (registered trademark) Applet” and “Java (registered trademark) application” can be supplied as client-side modules used by the software operating the peripherals in this case.
As for a commercial system, there are the cases where a demand to maintain stability of the entire system having started a normal operation is so strong that a change or a version upgrade of a printer driver and the application is not easily allowed. Amid such constraints of an actual printing environment, a vendor of the printers has a mission to meet various customer demands by solutions on the printer side rather than seeking the solutions on the customer side. For this reason, there is a method of customizing the firmware configuring the printer and printer controller and releasing it so as to meet each customer demand. However, customization of the firmware for meeting each customer demand requires a long development period and a large development cost of the apparatus, and updating of the firmware takes trouble of advanced maintenance by a field engineer. Thus, there remains a problem in promptly meeting each customer demand in terms of cost efficiency.
As for the complex machine incorporating the software operating environment such as the Java (registered trademark) platform, for instance, in the firmware of the incorporating system, it is possible to develop a new apparatus-embedded application independent of the firmware in the software operating environment. It is also possible to access a print function of the apparatus from the Java (registered trademark) application by means of the API. However, the Java (registered trademark) platform is positioned in an embedded application hierarchy inside the firmware, and so it is not possible to divert a print data receiving function and a print server function implemented in the same hierarchy as native embedded applications to the Java (registered trademark) application. To be more specific, it is necessary, for instance, to implement on the Java (registered trademark) side the print server function having various print service protocols for receiving print data by way of a network implemented therein. Thus, it is inefficient in terms of development burden, evaluation burden and the amount of memory on implementation.
In the case of having no hierarchy of the software operating environment in the firmware of the other incorporating system, the entire incorporating system is configured to be capable of the dynamic linking and plug-in so as to have a dynamic configuration. In the case of assuming that a portion requiring the dynamic properties is only a mechanism for flexibly and extendably adding preprocessing before interpreting a received PDL data stream, such a conventional approach is not suited to a low-cost small-scale system due to increased cost in conjunction with overhead for configuring the entire system as dynamic software and difficulty in quality assurance.
Consequently, there is a proposed technique for improving productivity in customization of PDL printers, whereby a filter portion for performing the preprocessing before interpreting the PDL data stream received by the printer is implemented as flexible and extendable software so as to clearly separate it from implementation of other portions of the printer firmware requiring stability (Japanese Patent Application No. 2004-093215).
In the case of the above Japanese Patent Application No. 2004-093215, it is necessary to perform filtering of the entire print request data stream and so efficient processing is not implemented. To be more specific, the print request data stream received by the image processing apparatus is mainly configured by a device control data stream portion consisting of instructions and orders relating to apparatus control such as a specification of a paper feeding and ejection stage of the printer like JL (Job Language) and a drawing data stream portion consisting of instructions and orders relating to drawing such as PDL. And the filtering is always performed to the data stream including both of them so that efficient processing cannot be performed since the entire process becomes heavy and throughput is reduced. Furthermore, no consideration is given to handling of various process request data streams other than PDL such as a temporary storage of data to the image processing apparatus and handling of various data streams such as sending image data read by the image processing apparatus by e-mail.